package com.cmeduSystem.common.flow.base.service;

import com.alibaba.fastjson.JSONObject;
import com.cmeduSystem.common.flow.model.FlowWorkOrder;

import java.util.List;
import java.util.Map;

/**
 * 工作流在线表单的服务接口。
 *
 * @author xulei
 * @date 2025-09-04
 */
public interface BaseFlowOnlineService {

    /**
     * 更新在线表单主表数据的流程状态字段值。
     *
     * @param workOrder 工单对象。
     */
    void updateFlowStatus(FlowWorkOrder workOrder);

    /**
     * 更新业务表的工单编号字段。
     *
     * @param workOrder 工单对象。
     */
    void updateWorkOrderCode(FlowWorkOrder workOrder);

    /**
     * 根据工单对象级联删除业务数据。
     *
     * @param workOrder 工单对象。
     */
    void deleteBusinessData(FlowWorkOrder workOrder);

    /**
     * 更新在线表单主表数据的业务数据。
     * @param processInstanceId 流程实例Id。
     * @param businessKey       业务主键Id。
     * @param masterData        主表数据。
     */
    void updateBusinessData(String processInstanceId, String businessKey, JSONObject masterData);

    /**
     * 获取业务数据。
     *
     * @param processInstanceId 流程实例Id。
     * @param businessKey       业务主键Id。
     * @return JSON格式化后的业务数据。
     */
    String getBusinessData(String processInstanceId, String businessKey);

    /**
     * 执行SQL查询。
     *
     * @param dblinkId 所在数据库链接Id。
     * @param sql      SQL语句。
     * @return 查询结果集。
     */
    List<Map<String, Object>> executeQuery(Long dblinkId, String sql);

    /**
     * 执行增删改的SQL。
     *
     * @param dblinkId 所在数据库链接Id。
     * @param sql      SQL语句。
     */
    void executeSql(Long dblinkId, String sql);
}
